const express = require("express");
const { STS } = require('ali-oss');
const CORS = require("cors");
const app = express();
const path = require("path");
const config = {
  // 配置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID。
  accessKeyId: "LTAI5tQDHEmidb3rzvdbWnbn",
  // 配置环境变量ALIBABA_CLOUD_ACCESS_KEY_SECRET。
  accessKeySecret: "iaHVzf62GoM2hSOkj0WjYvImShzNbp",
  // 将<YOUR-BUCKET>替换为Bucket名称。
  bucket: "wen-xuan",
  // 指定上传到OSS的文件前缀。
  dir: "prefix-new/",
};

app.use(express.static(path.join(__dirname, "templates")));
app.use(CORS());
app.use(function (req, res, next) {

  next();

});
app.get('/api/oss/get_sts_token_for_oss_upload', (req, res) => {
  let sts = new STS({
    accessKeyId: config.accessKeyId,
    accessKeySecret: config.accessKeySecret,
  });
  // roleArn填写步骤2获取的角色ARN，例如acs:ram::175708322470****:role/ramtest。
  // policy填写自定义权限策略，用于进一步限制STS临时访问凭证的权限。如果不指定Policy，则返回的STS临时访问凭证默认拥有指定角色的所有权限。
  // 3000为过期时间，单位为秒。
  // sessionName用于自定义角色会话名称，用来区分不同的令牌，例如填写为sessiontest。
  sts.assumeRole('acs:ram::1530256558631716:role/test-upload', ``, '3000', 'sessiontest').then((result) => {
    console.log(result);
    res.json({
      AccessKeyId: result.credentials.AccessKeyId,
      AccessKeySecret: result.credentials.AccessKeySecret,
      SecurityToken: result.credentials.SecurityToken,
    });
  }).catch((err) => {
    console.log(err);
    res.status(400).json(err.message);
  });
});
app.get('/', (req, res) => {
  res.send('服务已启动');
});
app.listen(8085, () => {
  console.log("http://127.0.0.1:8085");
});
